package com.xu.system.service;

import com.xu.base.model.BaseSelectVo;
import com.xu.mybatis.model.PageInfo;
import com.xu.system.model.pojo.dict.*;

import java.util.List;
import java.util.Map;

/**
 * 字典服务
 *
 * @Author: 许乾伟
 * @Date: 2024/12/17 17:05
 */
public interface IDictService {
    /**
     * 新增字典
     * @param req 新增请求
     * @return true/false
     */
    Boolean addDict(AddDictReq req);
    /**
     * 更新字典
     * @param req 更新请求
     * @return true/false
     */
    Boolean editDict(EditDictReq req);

    /**
     * 删除字典
     * @param dictId 字典id
     * @return true/false
     */
    Boolean delDict(Long dictId);

    /**
     * 字典详细信息
     * @param dictId
     * @return
     */
    DictVo detailDict(Long dictId);

    /**
     * 分页查询
     * @param req 查询请求
     * @return 字典集合
     */
    PageInfo<DictVo> queryPageDict(QueryDictReq req);

    /**
     * 新增字典项
     * @param req 新增请求
     * @return true/false
     */
    Boolean addDictItem(AddDictItemReq req);

    /**
     * 编辑字典项
     * @param req 更新请求
     * @return true/false
     */
    Boolean editDictItem(EditDictItemReq req);

    /**
     * 删除字典项
     * @param dictItemId
     * @return
     */
    Boolean delDictItem(Long dictItemId);

    /**
     * 字典项详细信息
     * @param dictItemId
     * @return
     */
    DictItemVo detailDictItem(Long dictItemId);

    /**
     * 分页查询字典项
     * @param req 查询请求
     * @return 字典项集合
     */
    PageInfo<DictItemVo> queryPageDictItem(QueryDictItemReq req);


    /**
     * 按字典编号查询字典项map
     * @param dictCode 字典编号
     * @return 字典项简易信息map
     */
    Map<String, String> queryDictMap(String dictCode);

    /**
     * 字典项的下拉列表
     * @param dictCode 字典code
     * @return
     */
    List<BaseSelectVo<String, String>> selectListByDictCode(String dictCode);
}
